package controllers

import (
	"net/http"

	"github.com/gin-gonic/gin"
)

// 定义错误码
/*
	{
	"code": 10000, // 程序中的错误码
	"msg": xx,     // 提示信息
	"data": {},    // 数据
	}
*/
type ResponseData struct {
	Code ResCode     `json:"code"`
	Msg  interface{} `json:"msg"`
	// omit：省略, 忽略。 当前字段为 nil时, 不会通过json发送过去。
	Data interface{} `json:"data,omitempty"`
}

type ResponseData1 struct {
	Code  ResCode     `json:"code"`
	Msg   interface{} `json:"msg"`
	Count int64       `json:"count"`
	// omit：省略, 忽略。 当前字段为 nil时, 不会通过json发送过去。
	Data interface{} `json:"data,omitempty"`
}

func ResponseError(c *gin.Context, code ResCode) {
	c.JSON(http.StatusOK, &ResponseData{
		Code: code,
		Msg:  code.Msg(),
		Data: nil,
	})
}

// 自定义返回的错误信息
func ResponseErrorWithMsg(c *gin.Context, code ResCode, msg interface{}) {
	c.JSON(http.StatusOK, &ResponseData{
		Code: code,
		Msg:  msg,
		Data: nil,
	})
}

func ResponseSuccess(c *gin.Context, data interface{}) {
	c.JSON(http.StatusOK, &ResponseData{
		Code: CodeSuccess,
		Msg:  CodeSuccess.Msg(),
		Data: data,
	})
}

func ResponseSuccess1(c *gin.Context, data interface{}, count int64) {
	c.JSON(http.StatusOK, &ResponseData1{
		Code:  CodeSuccess,
		Msg:   CodeSuccess.Msg(),
		Count: count,
		Data:  data,
	})
}
